with sns.plotting_context(rc={"axes.labelsize":14}): sns.pairplot(selected_watershed_features, corner=True) # show only lower triangle
y_pred_lr = lr.predict(X_train) y_pred_ls = ls.predict(X_train) y_pred_rg = rg.predict(X_train) y_pred_en = en.predict(X_train) r2_score_lr = r2_score(y_train, y_pred_lr) print("ols r^2 on training data : %f" % r2_score_lr) sns.scatterplot(x=y_train,y=y_pred_lr,alpha=0.5) plt.plot([0,y.max()], [0,y.max()], color='r') r2_score_ls = r2_score(y_train, y_pred_ls) print("lasso r^2 on training data : %f" % r2_score_ls) sns.scatterplot(x=y_train,y=y_pred_ls,alpha=0.5) r2_score_rg = r2_score(y_train, y_pred_rg) print("ridge r^2 on training data : %f" % r2_score_rg) sns.scatterplot(x=y_train,y=y_pred_rg,alpha=0.5) r2_score_en = r2_score(y_train, y_pred_en) print("elastic r^2 on training data : %f" % r2_score_en) sns.scatterplot(x=y_train,y=y_pred_en,alpha=0.5)y_pred_lr = lr.predict(X_test) y_pred_ls = ls.predict(X_test) y_pred_rg = rg.predict(X_test) y_pred_en = en.predict(X_test) r2_score_lr = r2_score(y_test, y_pred_lr) #print("ols r^2 on testing data : %f" % r2_score_lr) #sns.scatterplot(x=y_test,y=y_pred_lr) plt.plot([0,y.max()], [0,y.max()], color='black') r2_score_ls = r2_score(y_test, y_pred_ls) print("lasso r^2 on testing data : %f" % r2_score_ls) sns.scatterplot(x=y_test,y=y_pred_ls) r2_score_rg = r2_score(y_test, y_pred_rg) print("ridge r^2 on testing data : %f" % r2_score_rg) sns.scatterplot(x=y_test,y=y_pred_rg) r2_score_en = r2_score(y_test, y_pred_en) print("elastic r^2 on testing data : %f" % r2_score_en) sns.scatterplot(x=y_test,y=y_pred_en)import time from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LassoLarsIC from sklearn.pipeline import make_pipeline start_time = time.time() lasso_lars_ic = make_pipeline(StandardScaler(), LassoLarsIC(criterion="aic")).fit(X, y) fit_time = time.time() - start_timeresults = pd.DataFrame( { "alphas": lasso_lars_ic[-1].alphas_, "AIC criterion": lasso_lars_ic[-1].criterion_, } ).set_index("alphas") alpha_aic = lasso_lars_ic[-1].alpha_lasso_lars_ic.set_params(lassolarsic__criterion="bic").fit(X, y) results["BIC criterion"] = lasso_lars_ic[-1].criterion_ alpha_bic = lasso_lars_ic[-1].alpha_def highlight_min(x): x_min = x.min() return ["font-weight: bold" if v == x_min else "" for v in x] results.style.apply(highlight_min)ax = results.plot() ax.vlines( alpha_aic, results["AIC criterion"].min(), results["AIC criterion"].max(), label="alpha: AIC estimate", linestyles="--", color="tab:blue", ) ax.vlines( alpha_bic, results["BIC criterion"].min(), results["BIC criterion"].max(), label="alpha: BIC estimate", linestyle="--", color="tab:orange", ) ax.set_xlabel(r"$\alpha$") ax.set_ylabel("criterion") ax.set_xscale("log") ax.legend() _ = ax.set_title( f"Information-criterion for model selection (training time {fit_time:.2f}s)" )